<?php
//本周作业：
//1、 找出一个占4个字节的UTF-8 的汉字，不要和ppt里面的一样哦。
//答案 : 𠁃

//2、 用preg_replace_callback函数对网页中的所有图片地址进行处理，gif改为png，高度和宽度互换：
$string1 = 'img src="http://www.baidu.com/img/bd1.gif" width="278" height="127"';
$string1 = preg_replace_callback(
    '#gif" width="(\d{3})" height="(\d{3})"#',
    function($match){
        return 'png" width="'.$match[1].'" height="'.$match[2].'"';
    },$string1
);
//3、 设计一个自己的字符串加密解密算法。
function StrCode($string,$action='ENCODE'){
    $string = ''.$string;
    $action!= 'ENCODE' && $string = base64_decode($string);
    $code   = '';
    $key    = substr(md5('qeebu'),8,18);
    $keyLen = strlen($key);
    $strLen = strlen($string);
    for($i=0;$i<$strLen;$i++){
        $k = $i % $keyLen;
        $code.=$string[$i] ^ $key[$k];
    }
    return ($action != 'DECODE' ? base64_encode($code) : $code);
}
//4、用PHP实现关于UTF-8 的转换过程，已知Unicode码，得到这个Unicode码的UTF-8格式的汉字；反之，已经知道一个汉字的UTF-8字符串，提取出Unnicode码。
function get_unicode($str='张',$bits='3'){
    $str16 = str_replace('%','',urlencode($str));
    $str10 = hexdec($str16);//16转10
    $str2  = decbin($str10);//10转2

    if($bits == 3){
        $s1     = substr($str2,4,4);
        $s2     = substr($str2,10,6);
        $s3     = substr($str2,18,6);
        $newstr = $s1.$s2.$s3;
    }else if($bits == 4){
        $s1     = substr($str2,5,3);
        $s2     = substr($str2,10,6);
        $s3     = substr($str2,18,6);
        $s4     = substr($str2,26,6);
        $newstr = $s1.$s2.$s3.$s4;
    }
    $unicode = bindec($newstr);//2进制转10进制
    return array(
        'key'       =>$str,
        'utf-8'     =>$str2,
        'unicode'   =>$unicode,
        'unicode_2' =>$newstr,
        'utf-8_16'  =>$str16,
        'chinese'   =>'&#'.$unicode.';'
    );
}
print_r(get_unicode('张',3));
echo nl2br(chr(13));
print_r(get_unicode('𠁃',4));


//参考资料
//在线正则表达式调试:http://www.atool.org/regex.php
//preg_replace_callback函数 :http://php.net/manual/zh/function.preg-replace-callback.php





